﻿using Newtonsoft.Json;
using WeiXin.Tool;
using Newtonsoft.Json.Linq;
using System;

namespace WeiXin.Base.Card
{
    /// <summary>
    /// 创建卡券之后，开发者可以通过设置微信买单接口设置该card_id支持微信买单功能。
    /// 值得开发者注意的是，设置买单的card_id必须已经配置了门店，否则会报错
    /// </summary>
    public class BaseMessage
    {
        public BaseMessage()
        {
            this.CreateTime = (int)(DateTime.Now.ToFileTimeUtc());
        }
        /// <summary>
        /// 接口调用 URL地址
        /// http请求方式: POST
        /// "https://api.weixin.qq.com/card/paycell/set?access_token={0}";
        /// </summary>
        [JsonIgnore]
        public string PostUrl { get; set; }

        /// <summary>
        /// 调用接口凭证
        /// </summary>
        [JsonIgnore]
        public string access_token;

        /// <summary>
        /// 开发者微信号。
        /// </summary>
        [JsonIgnore]
        public string ToUserName { get; set; }

        /// <summary>
        /// 发送方帐号（一个OpenID）。
        /// </summary>
        [JsonIgnore]
        public string FromUserName { get; set; }

        /// <summary>
        /// 消息创建时间
        /// </summary>
        [JsonIgnore]
        public int CreateTime { get; set; }

        /// <summary>
        /// 消息类型 event
        /// </summary>
        [JsonIgnore]
        protected CDATA MsgType { get; set; }

        /// <summary>
        /// 返回JSON字符串
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return XmlHelper.ObjectToXml(this);
        }

        /// <summary>
        /// 买单事件推送
        /// </summary>
        /// <returns>错误码，0为正常；43008为商户没有开通微信支付权限或者没有在商户后台申请微信买单功能；</returns>
        public virtual bool Send(out string sReturnMessage)
        {
            sReturnMessage = HttpHelper.Post(string.Format(PostUrl, access_token), this.ToString());
            JObject jResult = JObject.Parse(sReturnMessage);
            return jResult["errcode"].ToString().Equals("0");
        }
    }
}
